home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / pastutor.EXE / tutor08a.pas < prev    next >
Pascal/Delphi Source File  |  1998-04-02  |  6KB  |  255 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Vision 2.0 Demo                        }
  4. {   Copyright (c) 1992 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8. program Tutor08a;
  9.  
  10. uses Memory, TutConst, Drivers, Objects, Views, Menus, App, Dialogs,
  11.   Editors, StdDlg;
  12.  
  13. type
  14.   POrderWindow = ^TOrderWindow;
  15.   TOrderWindow = object(TDialog)
  16.     constructor Init;
  17.   end;
  18.   TTutorApp = object(TApplication)
  19.     ClipboardWindow: PEditWindow;
  20.     OrderWindow: POrderWindow;
  21.     constructor Init;
  22.     destructor Done; virtual;
  23.     procedure DoAboutBox;
  24.     procedure HandleEvent(var Event: TEvent); virtual;
  25.     procedure InitMenuBar; virtual;
  26.     procedure InitStatusLine; virtual;
  27.     procedure LoadDesktop;
  28.     procedure NewWindow;
  29.     procedure OpenOrderWindow;
  30.     procedure OpenWindow;
  31.     procedure SaveDesktop;
  32.   end;
  33.  
  34. var
  35.   ResFile: TResourceFile;
  36.  
  37. const
  38.   ROrderWindow: TStreamRec = (
  39.      ObjType: 15001;
  40.      VmtLink: Ofs(TypeOf(TOrderWindow)^);
  41.      Load:    @TOrderWindow.Load;
  42.      Store:   @TOrderWindow.Store
  43.   );
  44.  
  45. procedure TutorStreamError(var S: TStream); far;
  46. var
  47.   ErrorMessage: String;
  48. begin
  49.   case S.Status of
  50.     stError: ErrorMessage := 'Stream access error';
  51.     stInitError: ErrorMessage := 'Cannot initialize stream';
  52.     stReadError: ErrorMessage := 'Read beyond end of stream';
  53.     stWriteError: ErrorMessage := 'Cannot expand stream';
  54.     stGetError: ErrorMessage := 'Unregistered type read from stream';
  55.     stPutError: ErrorMessage := 'Unregistered type written to stream';
  56.     end;
  57.   DoneVideo;
  58.   PrintStr('Error: ' + ErrorMessage);
  59.   Halt(Abs(S.Status));
  60. end;
  61.  
  62. constructor TOrderWindow.Init;
  63. var
  64.   R: TRect;
  65. begin
  66.   R.Assign(0, 0, 60, 17);
  67.   inherited Init(R, 'Orders');
  68.   Options := Options or ofCentered;
  69.   HelpCtx := $F000;
  70. end;
  71.  
  72. constructor TTutorApp.Init;
  73. var
  74.   R: TRect;
  75. begin
  76.   MaxHeapSize := 8192;
  77.   EditorDialog := StdEditorDialog;
  78.   StreamError := @TutorStreamError;
  79.   RegisterMenus;
  80.   RegisterObjects;
  81.   RegisterViews;
  82.   RegisterApp;
  83.   RegisterEditors;
  84.   RegisterDialogs;
  85.   RegisterType(ROrderWindow);
  86.   ResFile.Init(New(PBufStream, Init('TUTORIAL.TVR', stOpenRead, 1024)));
  87.   inherited Init;
  88.   DisableCommands([cmStockWin, cmSupplierWin]);
  89.   Desktop^.GetExtent(R);
  90.   ClipboardWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  91.   if ValidView(ClipboardWindow) <> nil then
  92.   begin
  93.     ClipboardWindow^.Hide;
  94.     InsertWindow(ClipboardWindow);
  95.     Clipboard := ClipboardWindow^.Editor;
  96.     Clipboard^.CanUndo := False;
  97.   end;
  98. end;
  99.  
  100. destructor TTutorApp.Done;
  101. begin
  102.   ResFile.Done;
  103.   inherited Done;
  104. end;
  105.  
  106. procedure TTutorApp.DoAboutBox;
  107. begin
  108.   ExecuteDialog(PDialog(ResFile.Get('ABOUTBOX')), nil);
  109. end;
  110.  
  111. procedure TTutorApp.HandleEvent(var Event: TEvent);
  112. var
  113.   R: TRect;
  114. begin
  115.   inherited HandleEvent(Event);
  116.   if Event.What = evCommand then
  117.   begin
  118.     case Event.Command of
  119.       cmOrderWin:
  120.         begin
  121.           OpenOrderWindow;
  122.           ClearEvent(Event);
  123.         end;
  124.       cmOptionsLoad:
  125.         begin
  126.           LoadDesktop;
  127.           ClearEvent(Event);
  128.         end;
  129.       cmOptionsSave:
  130.         begin
  131.           SaveDesktop;
  132.           ClearEvent(Event);
  133.         end;
  134.       cmClipShow:
  135.         with ClipboardWindow^ do
  136.         begin
  137.           Select;
  138.           Show;
  139.           ClearEvent(Event);
  140.         end;
  141.       cmNew:
  142.         begin
  143.           NewWindow;
  144.           ClearEvent(Event);
  145.         end;
  146.       cmOpen:
  147.         begin
  148.           OpenWindow;
  149.           ClearEvent(Event);
  150.         end;
  151.       cmOptionsVideo:
  152.         begin
  153.           SetScreenMode(ScreenMode xor smFont8x8);
  154.           ClearEvent(Event);
  155.         end;
  156.       cmAbout:
  157.         begin
  158.           DoAboutBox;
  159.           ClearEvent(Event);
  160.         end;
  161.     end;
  162.   end;
  163. end;
  164.  
  165. procedure TTutorApp.InitMenuBar;
  166. begin
  167.   MenuBar := PMenuBar(ResFile.Get('MAINMENU'));
  168. end;
  169.  
  170. procedure TTutorApp.InitStatusLine;
  171. var
  172.   R: TRect;
  173. begin
  174.   StatusLine := PStatusLine(ResFile.Get('STATUS'));
  175.   GetExtent(R);
  176.   StatusLine^.MoveTo(0, R.B.Y - 1);
  177. end;
  178.  
  179. procedure TTutorApp.LoadDesktop;
  180. var
  181.   DesktopFile: TBufStream;
  182.   TempDesktop: PDesktop;
  183.   R: TRect;
  184. begin
  185.   DesktopFile.Init('DESKTOP.TUT', stOpenRead, 1024);
  186.   TempDesktop := PDesktop(DesktopFile.Get);
  187.   DesktopFile.Done;
  188.   if ValidView(TempDesktop) <> nil then
  189.   begin
  190.     Desktop^.Delete(ClipboardWindow);
  191.     Delete(Desktop);
  192.     Dispose(Desktop, Done);
  193.     Desktop := TempDesktop;
  194.     Insert(Desktop);
  195.     GetExtent(R);
  196.     R.Grow(0, -1);
  197.     Desktop^.Locate(R);
  198.     InsertWindow(ClipboardWindow);
  199.   end;
  200. end;
  201.  
  202. procedure TTutorApp.NewWindow;
  203. var
  204.   R: TRect;
  205.   TheWindow: PEditWindow;
  206. begin
  207.   R.Assign(0, 0, 60, 20);
  208.   TheWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  209.   InsertWindow(TheWindow);
  210. end;
  211.  
  212. procedure TTutorApp.OpenOrderWindow;
  213. begin
  214.   OrderWindow := New(POrderWindow, Init);
  215.   InsertWindow(OrderWindow);
  216. end;
  217.  
  218. procedure TTutorApp.OpenWindow;
  219. var
  220.   R: TRect;
  221.   FileDialog: PFileDialog;
  222.   TheFile: FNameStr;
  223. const
  224.   FDOptions: Word = fdOKButton or fdOpenButton;
  225. begin
  226.   TheFile := '*.*';
  227.   New(FileDialog, Init(TheFile, 'Open file', '~F~ile name',
  228.     FDOptions, 1));
  229.   if ExecuteDialog(FileDialog, @TheFile) <> cmCancel then
  230.   begin
  231.     R.Assign(0, 0, 75, 20);
  232.     InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber)));
  233.   end;
  234. end;
  235.  
  236. procedure TTutorApp.SaveDesktop;
  237. var
  238.   DesktopFile: TBufStream;
  239. begin
  240.   Desktop^.Delete(ClipboardWindow);
  241.   DesktopFile.Init('DESKTOP.TUT', stCreate, 1024);
  242.   DesktopFile.Put(Desktop);
  243.   DesktopFile.Done;
  244.   InsertWindow(ClipboardWindow);
  245. end;
  246.  
  247. var
  248.   TutorApp: TTutorApp;
  249.  
  250. begin
  251.   TutorApp.Init;
  252.   TutorApp.Run;
  253.   TutorApp.Done;
  254. end.
  255.